{"componentChunkName":"component---src-templates-post-js","path":"/blog/import-or-require","webpackCompilationHash":"0f979b9b09e9513b4912","result":{"data":{"site":{"siteMetadata":{"keywords":["blog","ubug","tech blog","技术博客","playground"]}},"mdx":{"fields":{"title":"🎁 import 还是 require","tips":[],"categories":["code"],"datetime":"2019-09-03 16:34:10","noFooter":false,"description":"webpack、node.js、ES5 的模块引用是不一样的，本文了解一下模块化的一些东西，重点说明不同的代码组织方式。","plainTextDescription":"webpack、node.js、ES5 的模块引用是不一样的，本文了解一下模块化的一些东西，重点说明不同的代码组织方式。\n","author":"Ubug","banner":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='92'%3e%3cpath%20d='M0%2046v46h401V0H0v46m238-30l-1%203-1%203v2l1%205c0%207%205%2011%208%207%201-2%200-3-2-3-3%200-3-8%200-9l1-2-1-1-2-2c0-3-1-4-3-3m-28%205c-7%202-6%2014%201%2015%207%202%2013-6%208-12-2-3-5-4-9-3m-49%201c-1%201%200%2013%201%2014%202%202%204-2%204-7%200-3%201-4%202-5%202%200%202%200%202%206%200%209%205%2010%205%200%200-4%200-5%202-6s2%201%203%207c0%204%201%206%202%206%202%200%203-12%201-14-1-2-20-2-22-1m27%2010l1%2010c1%202%203-1%203-4s0-3%202-2c6%203%2012-6%207-13-1-2-2-2-7-2h-6v11m-24%2024c-6%204-2%2014%205%2014%204%200%207-2%207-4h-3c-2%202-6%201-7-1s-1-2%204-2%206-1%206-3c0-5-7-8-12-4m17%200c-3%202-3%209-1%2012%203%202%207%203%209%201l1%203%202%204c1%200%202-2%202-10%200-11-1-13-3-11h-2c-2-2-6-1-8%201m17%200c-3%207%201%2016%207%2013h4c2%202%202%201%202-9%200-8-2-9-3-1-1%2010-7%2010-7%200%200-5-2-7-3-3m41-1c-4%203-4%2011%200%2014%203%202%2011%201%2011-3h-4c-1%202-5%201-6-1%200-2%201-2%205-2%205%200%205%200%205-3%200-5-7-8-11-5'%20fill='%23573ede'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":4.368932038834951,"src":"/static/d432bed0d654bf430d905eac915ebeb9/f5395/banner.jpg","srcSet":"/static/d432bed0d654bf430d905eac915ebeb9/9e575/banner.jpg 500w,\n/static/d432bed0d654bf430d905eac915ebeb9/f5395/banner.jpg 900w","srcWebp":"/static/d432bed0d654bf430d905eac915ebeb9/8410c/banner.webp","srcSetWebp":"/static/d432bed0d654bf430d905eac915ebeb9/7fe04/banner.webp 500w,\n/static/d432bed0d654bf430d905eac915ebeb9/8410c/banner.webp 900w","sizes":"(max-width: 900px) 100vw, 900px"}}},"bannerCredit":null,"slug":"/blog/import-or-require","tags":["整理","思考","模块","import","require","CMD","AMD","Webpack","ES5","ES6"]},"headings":[{"value":"一、 这是个什么问题","depth":2},{"value":"1.1 Babel 与 webpack 的配合","depth":3},{"value":"1.1.1 Commonjs 怎么引入原本是 esModule 的模块","depth":4},{"value":"1.1.2. esModule 新语法引入 Commonjs","depth":4},{"value":"1.2 tsc 编译 ts 文件","depth":3},{"value":"1.3 不同引用","depth":3},{"value":"二、 Webpack 的处理","depth":2},{"value":"三、 标准的产生场景，怎么去解决问题","depth":2},{"value":"1. AMD","depth":3},{"value":"2. CMD","depth":3},{"value":"3. Commonjs","depth":3},{"value":"4. esModule","depth":3},{"value":"四、 说了这么多","depth":2}],"body":"const _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsx mdx */\n\nconst _frontmatter = {\n  \"slug\": \"import-or-require\",\n  \"title\": \"🎁 import 还是 require\",\n  \"date\": \"2019-09-03 16:34:10\",\n  \"author\": \"Ubug\",\n  \"description\": \"webpack、node.js、ES5 的模块引用是不一样的，本文了解一下模块化的一些东西，重点说明不同的代码组织方式。\",\n  \"categories\": [\"code\"],\n  \"tags\": [\"整理\", \"思考\", \"模块\", \"import\", \"require\", \"CMD\", \"AMD\", \"Webpack\", \"ES5\", \"ES6\"],\n  \"banner\": \"./banner.jpg\"\n};\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return mdx(\"div\", props);\n};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  let {\n      components\n    } = _ref,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"hr\", null), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u5199\\u4EE3\\u7801\\u7684\\u65F6\\u5019\\u4E0D\\u80FD\\u4E0D\\u77E5\\u5176\\u6240\\u4EE5\\u7136\\uFF0C\\u5728\\u73B0\\u5728\\u5DE5\\u7A0B\\u5316\\u7A0B\\u5EA6\\u7279\\u522B\\u9AD8\\u7684\\u65F6\\u4EE3\\uFF0C\\u5F88\\u591A\\u914D\\u7F6E\\u90FD\\u6709\\u5341\\u5206\\u6210\\u719F\\u7684\\u811A\\u624B\\u67B6\\u5DE5\\u5177\\uFF0C\\u4E00\\u884C\\u4EE3\\u7801\\u5F00\\u7BB1\\u5373\\u7528\\u7684\\u4F53\\u9A8C\\u3002\\u4F46\\u662F\\u8FD9\\u4E9B\\u4E1C\\u897F\\u90FD\\u662F\\u8F85\\u52A9\\u7684\\u5DE5\\u5177\\u7BB1\\uFF0C\\u6211\\u4EEC\\u5373\\u5C06\\u79C3\\u9876\\u7684\\u827A\\u672F\\u5BB6\\u66F4\\u9700\\u8981\\u6CE8\\u91CD\\u57FA\\u7840\\uFF0C\\u4E0D\\u7136\\u5F88\\u591A\\u65F6\\u5019\\u9879\\u76EE\\u62A5\\u9519\\u90FD\\u4F1A\\u8BA9\\u81EA\\u5DF1\\u4E0D\\u77E5\\u6240\\u63AA\\uFF0C\\u6216\\u8005\\u4F1A\\u51FA\\u73B0\\u201C\\u660E\\u660E\\u81EA\\u5DF1\\u5F04\\u5F97\\u6CA1\\u9519\\u600E\\u4E48\\u8FD8\\u662F\\u6CA1\\u6CD5\\u8FD0\\u884C\\uFF0C\\u4E00\\u9635\\u9F13\\u6363\\u540E\\u6709\\u83AB\\u540D\\u5176\\u5999\\u6210\\u529F\\u8FD0\\u884C\\u7684\\u5947\\u5999\\u8FC7\\u7A0B\\u201D\\u3002\\u800C\\u5E94\\u63A5\\u4E0D\\u6687\\u7684\\u5DE5\\u5177\\u548C\\u6846\\u67B6\\u5C31\\u50CF\\u662F\\u65F6\\u4EE3\\u7684\\u6D2A\\u6D41\\uFF0C\\u4F60\\u552F\\u4E00\\u80FD\\u8FFD\\u7684\\u4E0A\\u7684\\u662F\\u81EA\\u5DF1\\u89E3\\u51B3\\u95EE\\u9898\\u7684\\u80FD\\u529B\\u3002\")), mdx(\"hr\", null), mdx(\"p\", null, \"\\u8C01\\u8FD8\\u8BB0\\u5F97\\u5F53\\u524D CMD, AMD, Commonjs \\u8FD8\\u6709\\u8BF4\\u4E0D\\u6E05\\u695A\\u7684\\u4F9D\\u8D56\\u5904\\u7406\\u548C\\u6587\\u4EF6\\u5F15\\u5165\\u800C\\u51FA\\u73B0\\u7684\\u5F88\\u591A\\u6807\\u51C6\\u548C\\u5B9E\\u73B0\\u3002\\u73B0\\u5728\\u521D\\u5B66\\u8005\\u5C0F\\u5E74\\u8F7B\\u4E0A\\u624B\\u5C31\\u662F Vue\\uFF0CReact \\u7B49\\u6846\\u67B6\\uFF0C\\u65E5\\u5E38\\u5F00\\u53D1\\u5C31\\u662F\\u8C03\\u8C03\\u7EC4\\u4EF6\\uFF0C\\u62FC\\u62FC\\u754C\\u9762\\uFF0C\\u5DE6\\u8FB9\\u79FB\\u4E00\\u70B9\\uFF0C\\u989C\\u8272\\u6DF1\\u4E00\\u70B9\\u7684\\u8D44\\u6DF1\\u5F00\\u53D1\\u5DE5\\u7A0B\\u5E08\\uFF0C\\u5177\\u4F53\\u5728\\u4F7F\\u7528\\u8FC7\\u7A0B\\u4E2D\\u5F88\\u591A\\u7684\\u5DE5\\u7A0B\\u5316\\u5B9E\\u8DF5\\u90FD\\u5728 webpack \\u8FD9\\u4E2A\\u9ED1\\u76D2\\u4E2D\\u5904\\u7406\\u4E86\\uFF0C\\u751A\\u81F3 webpack \\u90FD\\u662F\\u522B\\u4EBA\\u914D\\u7F6E\\u597D\\u7684\\uFF0C\\u5BFC\\u81F4\\u751A\\u81F3\\u6709\\u4E9B\\u4EBA\\u4F1A\\u89C9\\u5F97\\u6587\\u4EF6\\u7684\\u5F15\\u7528\\u5C31\\u662F\\u652F\\u6301\\u591A\\u79CD\\u5199\\u6CD5\\u800C\\u5DF2\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"var a = require('./a.js');\\nvar a = require('./a.js').default;\\nimport a from './a';\\nimport { a } from './a';\\nimport { b as a } from './a';\\nimport * as c from './c';\\n\\nmodule.exports = {a: 'A'};\\nexports.a = 'A';\\nexports.default = 'A';\\nexport default 'A';\\nexport const a = 'A';\\n\")), mdx(\"h2\", null, \"\\u4E00\\u3001 \\u8FD9\\u662F\\u4E2A\\u4EC0\\u4E48\\u95EE\\u9898\"), mdx(\"p\", null, \"\\u6D89\\u53CA\\uFF1A \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ES5\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ES6\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Node.js\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Babel\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Typescript\"), \"\\u3001\\u8BED\\u6CD5\\u68C0\\u67E5\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Webpack\"), \"\\u3001\\u76F8\\u5173\\u914D\\u7F6E\\u7B49\\u3002\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ES5\"), \" \\u4E0B\\u4EC5\\u652F\\u6301\\u8F85\\u52A9\\u51FD\\u6570\\u4E0B\\u7684 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"AMD\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"CMD\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Commonjs\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ES6\"), \" \\u652F\\u6301 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ES5\"), \" \\u7684\\u6A21\\u5757\\u5C01\\u88C5\\uFF0C\\u540C\\u65F6\\u539F\\u751F\\u6DFB\\u52A0\\u4E86\\u6A21\\u5757\\u5316\\u8BED\\u6CD5 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"esModule\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Node.js\"), \" \\u751F\\u6001\\u6BD4\\u8F83\\u65E9\\uFF0C\\u6A21\\u5757\\u7531 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"node\"), \" \\u786E\\u5B9A\\u7EDF\\u4E00\\u7684 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Commonjs\"), \" \\u8BED\\u6CD5\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ts\"), \" \\u6587\\u4EF6\\u7684\\u6A21\\u5757\\u5316\\u6CBF\\u7528\\u4E86 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ES6\"), \" \\u7684\\u6A21\\u5757\\u65B9\\u6CD5\\uFF08\\u4E5F\\u63D0\\u4F9B\\u4E86\\u517C\\u5BB9 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"Commonjs\"), \" \\u7684\\u65B9\\u6CD5\\uFF0C\\u4F46\\u662F\\u7528\\u7684\\u5F88\\u5C11\\uFF09\")), mdx(\"p\", null, \"\\u4EE5\\u4E0A\\u90FD\\u662F\\u7EDF\\u4E00\\u5E72\\u51C0\\u7684\\u6A21\\u5757\\u5BFC\\u5165\\u5BFC\\u51FA\\uFF0C\\u5982\\u679C\\u6DF7\\u7528\\u5462\\uFF1F \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ES6\"), \" \\u80FD\\u591F\\u517C\\u5BB9 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ES5\"), \" \\u7684\\u6A21\\u5757\\u89E3\\u51B3\\u65B9\\u6848\\uFF0C\\u4F46\\u662F \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ES6\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"TS\"), \" \\u7684\\u6A21\\u5757\\u5982\\u679C\\u8981\\u5728 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ES5\"), \"\\u3001\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Node\"), \" \\u73AF\\u5883\\u4E0B\\u4F7F\\u7528\\u5C31\\u9700\\u8981\\u9884\\u7F16\\u8BD1\\u4E86\\u3002\\uFF08\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Node\"), \" \\u7684\\u6A21\\u5757\\u5148\\u4E0D\\u8BF4\\uFF09\"), mdx(\"p\", null, \"\\u9884\\u7F16\\u8BD1\\u7684\\u90E8\\u5206 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Babel\"), \" \\u548C \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"tsc\"), \" \\u600E\\u4E48\\u5904\\u7406\\u7684\\uFF1F\"), mdx(\"h3\", null, \"1.1 Babel \\u4E0E webpack \\u7684\\u914D\\u5408\"), mdx(\"p\", null, \"babel \\u9ED8\\u8BA4\\u5C06 esModule \\u8F6C\\u4E3A ES5 \\u7684 Commonjs \\u8BED\\u6CD5 (.babelrc \\u53EF\\u4EE5\\u6307\\u5B9A\\u7F16\\u8BD1\\u6210 esModule)\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ts\"\n  }, \"// esModule\\nexport default () => {};\\nexport const a = 1;\\nconst b = 2;\\nconst c = 3;\\nexport { b, c };\\n\\n// esModule \\u8F6C\\u6210\\u7684 Commonjs\\nexports.default = function(){}; // \\u8FD9\\u4E5F\\u662F commonjs \\u5F15\\u5165 require('./a').default \\u7684\\u539F\\u56E0\\nexports.a = 1;\\nexports.b = 2;\\nexports.c = 3;\\nexports.__esModule = true;\\n// \\u5C06 export \\u8D4B\\u503C\\u7ED9 exports\\uFF0C\\u5E76\\u5E26\\u4E0A\\u4E00\\u4E2A\\u6807\\u5FD7 __esModule \\u6807\\u5FD7\\u539F\\u672C\\u662F esModule\\n\")), mdx(\"p\", null, \"babel \\u7F16\\u8BD1\\u662F\\u5355\\u6587\\u4EF6\\u7EA7\\u522B\\u7684\\uFF0C\\u591A\\u6587\\u4EF6\\u8054\\u5408\\u8D77\\u6765\\u9700\\u8981\\u63D0\\u4F9B \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"require\"), \"/\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"exports\"), \" \\u7684\\u5B9E\\u73B0\\uFF0C\\u8FD9\\u4E2A\\u662F webpack \\u505A\\u7684\\uFF0C\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"__webpack_require__\"), \" \\u76F4\\u63A5\\u53EF\\u4EE5\\u4F7F\\u7528 babel \\u7684\\u7F16\\u8BD1\\u7ED3\\u679C\\uFF0C\\u5E76\\u4E14\\u6253\\u5305\\u5408\\u5E76\\u5168\\u90E8\\u6A21\\u5757\\uFF0C\\u8BA9\\u6574\\u4E2A\\u903B\\u8F91\\u80FD\\u591F\\u8FD0\\u884C\\uFF0C\\u6A21\\u5757\\u7684\\u5904\\u7406\\u662F \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Babel\"), \" \\u5904\\u7406\\u7684\\u3002\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u4E0A\\u9762\\u53EA\\u662F\\u8BED\\u6CD5\\u7684\\u8F6C\\u6362\\uFF0C\\u5F15\\u5165\\u7684\\u610F\\u56FE\\u548C\\u8BED\\u6CD5\\u8FD8\\u662F\\u6709\\u5DEE\\u5F02\\u7684\\uFF1A\")), mdx(\"h4\", null, \"1.1.1 Commonjs \\u600E\\u4E48\\u5F15\\u5165\\u539F\\u672C\\u662F esModule \\u7684\\u6A21\\u5757\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// Commonjs \\u5F15\\u5165 esModule \\u7684\\u9ED8\\u8BA4\\u5BFC\\u51FA\\uFF08\\u6BD4\\u8F83\\u7279\\u6B8A\\uFF09\\nvar a = require('./a.js').default\\n\")), mdx(\"p\", null, \"\\u5176\\u4ED6\\u5F15\\u5165\\u65B9\\u5F0F\\u6309\\u7167\\u7F16\\u8BD1\\u540E\\u7684\\u7ED3\\u679C\\u6B63\\u5E38\\u4F7F\\u7528\"), mdx(\"h4\", null, \"1.1.2. esModule \\u65B0\\u8BED\\u6CD5\\u5F15\\u5165 Commonjs\"), mdx(\"p\", null, \"\\u65B0\\u8BED\\u6CD5\\u5F15\\u5165\\u65E7\\u8BED\\u6CD5\\u57FA\\u672C\\u4E0A\\u6309\\u7167\\u4E4B\\u524D\\u7684\\u610F\\u56FE\\uFF0C\\u65B0\\u8BED\\u6CD5\\u7F16\\u8BD1\\u7684 Commonjs \\u600E\\u4E48\\u5F15\\u5165\\u65E7\\u8BED\\u6CD5\\u4E0B\\u7684 Commonjs \\u8BED\\u6CD5\\uFF0C\\u5C24\\u5176\\u5904\\u7406 default\\u3001\\u901A\\u914D\\u7B26\\u548C\\u6790\\u6784\\u5F15\\u5165\\u3002\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"default \\u95EE\\u9898\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// es6\\u4E0B:\\n// import a from './a.js';\\nfunction _interopRequireDefault(obj) {\\n  return obj && obj.__esModule ? obj : { default: obj };\\n}\\n// a.js \\u662F esModule \\u6587\\u4EF6\\u7684\\u8BDD\\u5F15\\u5165\\u7684\\u662F default\\n// a.js \\u662F Commonjs \\u6587\\u4EF6\\u7684\\u8BDD\\u5F15\\u5165\\u7684\\u662F module.exports\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"*\", \" \\u901A\\u914D\\u7B26\\u95EE\\u9898\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// es6 \\u4E0B\\uFF1A\\n// import * as a from './a.js';\\nfunction _interopRequireWildcard(obj) { // \\u7CBE\\u7B80\\n  if (obj && obj.__esModule) {\\n    return obj;\\n  }\\n  else {\\n    var newObj = {};\\n    if (obj != null) {\\n      for (var key in obj) {\\n        if (Object.prototype.hasOwnProperty.call(obj, key))\\n          newObj[key] = obj[key];\\n      }\\n    }\\n    newObj.default = obj;\\n    return newObj;\\n  }\\n}\\n// a.js \\u662F esModule \\u6587\\u4EF6\\u7684\\u8BDD\\u5F15\\u5165\\u7684\\u662F exports \\u6574\\u4F53\\n// a.js \\u662F Commonjs \\u6587\\u4EF6\\u7684\\u8BDD\\u5F15\\u5165\\u7684\\u662F module.exports \\u518D\\u52A0\\u4E0A\\u4E00\\u4E2A default \\u672C\\u8EAB\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u6790\\u6784\\u5F15\\u5165\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// es6\\u4E0B:\\n// import { a } from './a.js';\\n\\n// \\u8F6C\\u4E3A Commonjs \\u4E0B:\\n// require('./a.js').a\\n\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u901A\\u8FC7 babel \\u7684\\u8F85\\u52A9\\u8FD0\\u884C\\u65F6\\u51FD\\u6570\\uFF08transform-runtime \\u63D2\\u4EF6\\uFF09\\uFF0C\\u53EF\\u4EE5\\u5B9E\\u73B0\\u591A\\u79CD\\u89C4\\u8303\\u6A21\\u5757\\u7684\\u4E92\\u76F8\\u5F15\\u7528\\uFF0C\\u5F15\\u7528\\u610F\\u56FE\\u4E5F\\u505A\\u4E86\\u8F6C\\u6362\\u3002\")), mdx(\"h3\", null, \"1.2 tsc \\u7F16\\u8BD1 ts \\u6587\\u4EF6\"), mdx(\"p\", null, \"\\u9ED8\\u8BA4\\u60C5\\u51B5\\u4E0B ts \\u662F\\u4E0D\\u5141\\u8BB8\\u591A\\u79CD\\u89C4\\u8303\\u7684\\u4E92\\u64CD\\u4F5C\\uFF0C\\u4F46\\u662F\\u53EF\\u4EE5\\u4FEE\\u6539\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-json\"\n  }, \"// tsconfig.json\\n{\\n  // \\u8BED\\u6CD5\\u68C0\\u67E5\\u4E0A\\u5141\\u8BB8\\u6CA1\\u6709 default \\u7684\\u5F15\\u5165\\n  \\\"allowSyntheticDefaultImports\\\": true,\\n  // es \\u6A21\\u5757\\u4E0E\\u5176\\u4ED6\\u6A21\\u5757\\u7684\\u4E92\\u64CD\\u4F5C\\uFF0C\\u9700\\u6307\\u5B9A module \\u5B57\\u6BB5\\n  \\\"esModuleInterop\\\": true,\\n  \\\"module\\\": \\\"commonjs\\\",\\n}\\n\")), mdx(\"p\", null, \"\\u914D\\u7F6E\\u4E92\\u64CD\\u4F5C\\u4E4B\\u540E\\uFF0C\\u5F15\\u5165\\u90E8\\u5206\\u53EF\\u4EE5\\u5F15\\u5165 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Commonjs\"), \" \\u89C4\\u8303\\uFF0C\\u5BFC\\u51FA\\u4E5F\\u53EF\\u4EE5\\u5BFC\\u51FA\\u53EF\\u4EE5\\u88AB  \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"require\"), \" \\u7684\\u6A21\\u5757\\u3002\\u53EA\\u662F\\u8FD9\\u6837\\u7684\\u8BDD\\u7F16\\u8BD1\\u5B8C\\u6210\\u7684\\u4EE3\\u7801\\u4E2D\\uFF0C\\u5373\\u65F6\\u8BED\\u6CD5\\u76EE\\u6807\\u662F \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ES6\"), \"\\uFF0C\\u4F46\\u662F\\u6A21\\u5757\\u5173\\u7CFB\\u90FD\\u662F \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Commonjs\"), \" \\u89C4\\u8303\\u4E86\\u3002\"), mdx(\"h3\", null, \"1.3 \\u4E0D\\u540C\\u5F15\\u7528\"), mdx(\"p\", null, \"\\u4E0B\\u9762\\u7684\\u8BED\\u6CD5\\u573A\\u666F\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"// Commonjs \\u4E2D\\u5F15\\u5165\\u5916\\u90E8\\u6A21\\u5757\\nvar a = require('./a.js');\\n// Commonjs \\u4E2D\\u5F15\\u5165 esModule\\uFF08\\u6BD4\\u5982 Commonjs \\u7684\\u6A21\\u5757\\u5F15\\u5165\\u7B2C\\u4E09\\u65B9 esModule \\u6807\\u51C6\\u7684 npm \\u5305\\uFF09\\nvar a = require('./a.js').default;\\n// esModule \\u4E2D \\u5F15\\u5165 esModule \\u7684 default \\u5BFC\\u51FA\\uFF0C\\u6216\\u8005\\u5F15\\u5165 Commonjs \\u7684 module.exports\\nimport a from './a';\\n// esModule \\u4E2D \\u5F15\\u5165 esModule \\u7684 export a\\uFF0C\\u6216\\u8005\\u5F15\\u5165 Commonjs \\u7684 exports.a\\nimport { a } from './a';\\n// esModule \\u4E2D \\u5F15\\u5165\\u522B\\u540D\\nimport { b as a } from './a';\\n\\n// Commonjs \\u4E2D\\u5BFC\\u51FA\\u9ED8\\u8BA4\\nmodule.exports = {a: 'A'};\\n// Commonjs \\u4E2D\\u5BFC\\u51FA a\\nexports.a = 'A';\\n// Commonjs \\u4E2D\\u5BFC\\u51FA default \\u540D\\u79F0\\nexports.default = 'A';\\n// esModule \\u4E2D\\u5BFC\\u51FA\\u9ED8\\u8BA4\\nexport default 'A';\\n// esModule \\u4E2D\\u5BFC\\u51FA a\\nexport const a = 'A';\\n\")), mdx(\"h2\", null, \"\\u4E8C\\u3001 Webpack \\u7684\\u5904\\u7406\"), mdx(\"p\", null, \"\\u5F88\\u591A\\u4EBA\\u5728\\u4F7F\\u7528 webpack \\u7684\\u65F6\\u5019\\u6CA1\\u6709\\u8003\\u8651\\u8FC7\\u600E\\u4E48\\u4F7F\\u7528 \\u8FD9\\u4E2A\\u52A0\\u8F7D\\u65B9\\u5F0F\\u7684\\u95EE\\u9898\\uFF0C\\u6709\\u4E9B\\u4EBA\\u5199 node \\u6BD4\\u8F83\\u591A\\uFF0C\\u7ECF\\u5E38\\u4F7F\\u7528 require \\u7684\\u65B9\\u5F0F\\u5F15\\u5165\\u4F9D\\u8D56\\uFF0C\\u53E6\\u4E00\\u4E9B\\u4EBA\\u559C\\u6B22\\u4F7F\\u7528\\u6700\\u65B0\\u8BED\\u6CD5\\uFF0C\\u6240\\u4EE5\\u4E00\\u822C\\u90FD\\u662F import from\\uFF0C\\u8FD9\\u4E24\\u79CD\\u65B9\\u5F0F\\u6DF7\\u5199 webpack \\u90FD\\u80FD\\u6B63\\u786E\\u7684\\u6253\\u5305\\u51FA\\u6765\\u3002\"), mdx(\"p\", null, \"\\u9996\\u5148 webpack \\u672C\\u8EAB\\u7B80\\u5355\\u8BF4\\u5C31\\u662F\\u63D0\\u4F9B\\u4E86\\u6587\\u4EF6\\u7684\\u6253\\u5305\\u8FC7\\u7A0B\\uFF0C\\u6574\\u4E2A\\u5904\\u7406\\u8FC7\\u7A0B\\u63D0\\u4F9B\\u751F\\u547D\\u5468\\u671F\\u51FD\\u6570\\uFF0C\\u901A\\u8FC7\\u8FD9\\u4E9B\\u8FC7\\u7A0B\\u94A9\\u5B50\\u63D0\\u4F9B\\u63D2\\u4EF6\\u6CE8\\u518C\\u7684\\u673A\\u5236\\uFF0C\\u7136\\u540E\\u901A\\u8FC7\\u5404\\u79CD loader \\u548C plugin \\u63D0\\u4F9B\\u4E86\\u529F\\u80FD\\u5F3A\\u5927\\u7684\\u529F\\u80FD\\uFF0C\\u5728\\u6BCF\\u4E2A\\u9636\\u6BB5\\u8C03\\u7528\\u63D2\\u4EF6\\u7684\\u65B9\\u6CD5\\u5BF9\\u6587\\u4EF6\\u5185\\u5BB9\\u8FDB\\u884C\\u89E3\\u6790\\uFF0C\\u5904\\u7406\\u540E\\u8F93\\u51FA\\u3002\"), mdx(\"p\", null, \"\\u5176\\u4E2D js \\u6587\\u4EF6\\u7684\\u5904\\u7406\\u9ED8\\u8BA4\\u662F\\u4EA4\\u7531 babel-loader \\u7684\\uFF0C\\u6838\\u5FC3\\u4E5F\\u5C31\\u662F\\u8C03\\u7528 babel \\u8F6C\\u6362\\u6587\\u4EF6\\u6210\\u6807\\u51C6\\u7684\\u6A21\\u5757\\uFF0C\\u6240\\u4EE5\\u65E0\\u8BBA\\u662F ES7\\uFF0CES6\\u90FD\\u662F\\u7EDF\\u4E00\\u8C03\\u7528 babel \\u8FDB\\u884C\\u89E3\\u6790\\uFF0C\\u4ECE\\u5165\\u53E3\\u6587\\u4EF6\\u5F00\\u59CB\\u5206\\u6790\\u4F9D\\u8D56\\u6587\\u4EF6\\uFF0C\\u7136\\u540E\\u628A js \\u6587\\u4EF6\\u6309\\u7167\\u4F9D\\u8D56\\u4E00\\u4E2A\\u4E00\\u4E2A\\u7684\\u89E3\\u6790\\u751F\\u6210\\u6807\\u51C6\\u7684 ES5 \\u6A21\\u5757\\uFF0C\\u800C webpack \\u6240\\u505A\\u7684\\u7B80\\u5355\\u5DE5\\u4F5C\\u5C31\\u662F\\u628A\\u751F\\u6210\\u7684\\u8FD9\\u4E9B\\u6A21\\u5757\\u7EC4\\u5408\\u6210 bundle.js \\u6587\\u4EF6\\uFF0C\\u6700\\u540E\\u63D0\\u4F9B\\u4E86\\u4E00\\u4E2A require \\u52A0\\u8F7D\\u5668\\u7136\\u540E\\u5C31\\u53EF\\u4EE5\\u5728\\u6D4F\\u89C8\\u5668\\u4E2D\\u8FD0\\u884C\\u4E86\\u3002(\\u5B9E\\u9645 webpack \\u505A\\u7684\\u5DE5\\u4F5C\\u8FDC\\u8FDC\\u590D\\u6742)\"), mdx(\"p\", null, \"\\u6240\\u4EE5\\u8BF4\\u767D\\u4E86\\uFF0C\\u8FD9\\u662F Babel \\u5B9E\\u73B0\\u7684\\u8F6C\\u6362\\u8FC7\\u7A0B\\uFF0C\\u5C06 ES6 \\u7684\\u89C4\\u8303\\u8F6C\\u6362\\u6210 ES5 \\u4E5F\\u652F\\u6301\\u7684 Commonjs \\u7684\\u8FC7\\u7A0B\\u800C\\u5DF2\\uFF0C\\u5269\\u4E0B\\u7684\\u5C31\\u662F\\u8BA9 webpack \\u5904\\u7406\\u4E86\\uFF0C\\u800C webpack \\u7B80\\u5355\\u7C97\\u66B4\\u7684\\u628A\\u8FD9\\u4E9B\\u4F9D\\u8D56\\u5168\\u90FD\\u6253\\u5305\\u5230\\u4E00\\u4E2A\\u6587\\u4EF6\\uFF0C\\u89E3\\u51B3\\u4E86\\u5BA2\\u6237\\u7AEF\\u600E\\u4E48\\u5904\\u7406\\u5F02\\u6B65\\u7684\\u95EE\\u9898\\uFF0C\\u90A3\\u5C31\\u662F\\u4E0D\\u8981\\u5F02\\u6B65\\uFF0CCommon.js \\u4E5F\\u5C31\\u80FD\\u6B63\\u5E38\\u8FD0\\u884C\\u4E86\\u3002\\u76F4\\u63A5\\u540E\\u679C\\u5C31\\u662F\\u6253\\u5305\\u540E\\u52A8\\u8F84\\u6570\\u5146\\u7684\\u5DE8\\u5927 js \\u4F53\\u79EF\\uFF0C\\u8FD9\\u4E5F\\u662F webpack \\u521A\\u5F00\\u59CB\\u88AB\\u8BDF\\u75C5\\u5F88\\u591A\\u7684\\u4E00\\u70B9\\uFF0C\\u53CD\\u524D\\u7AEF\\u7684\\u4E1C\\u897F\\uFF0C\\u5C31\\u50CF\\u662F\\u4E00\\u4E2A\\u5927\\u80D6\\u5B50\\u88AB\\u5ACC\\u5F03\\u5230\\u59D4\\u5C48\\u60F3\\u54ED\\u7684\\u6837\\u5B50\\u3002\\u4E0D\\u8FC7\\u8FD9\\u79CD\\u7B80\\u5355\\u7C97\\u66B4\\u7684\\u5F00\\u53D1\\u65B9\\u5F0F\\u6DF1\\u5F97\\u5E7F\\u5927\\u5E95\\u5C42\\u6C11\\u5DE5\\u7684\\u8BA4\\u540C\\uFF0C\\u4E0D\\u5728\\u7EA0\\u7ED3\\u5F02\\u6B65\\u52A0\\u8F7D\\u548C\\u754C\\u9762\\u7684\\u7B49\\u5F85\\u7B49\\u5305\\u88B1\\uFF0C\\u4F18\\u79C0\\u7684\\u5F00\\u53D1\\u4F53\\u9A8C\\uFF0C\\u66F4\\u52A0\\u65B9\\u4FBF\\u7684\\u5728\\u5BA2\\u6237\\u7AEF\\u7EC4\\u7EC7\\u5927\\u578B APP \\u7684\\u5F00\\u53D1\\uFF0C\\u5DF2\\u7ECF\\u8DB3\\u591F\\u8BC1\\u660E\\u8FD9\\u79CD\\u5F00\\u53D1\\u65B9\\u5F0F\\u6709\\u5B58\\u5728\\u7684\\u5FC5\\u8981\\u4E86\\uFF0C\\u66F4\\u4E0D\\u7528\\u8BF4\\u540E\\u9762 webpack \\u9488\\u5BF9\\u4E00\\u4E9B\\u95EE\\u9898\\u8FDB\\u884C\\u7684\\u6539\\u8FDB\\u4E86\\u3002\"), mdx(\"p\", null, \"\\u56DE\\u8FC7\\u5934\\u770B\\u8FD9\\u4E2A\\u95EE\\u9898\\uFF0C\\u4E0B\\u9762\\u8FD9\\u4E2A\\u94FE\\u63A5\\u662F babel \\u7684\\u5728\\u7EBF\\u8F6C\\u6362\\uFF0C\\u53EF\\u4EE5\\u5728\\u5DE6\\u8FB9\\u7F16\\u5199\\u4E0D\\u540C\\u89C4\\u8303\\u7684 js\\uFF0C\\u53F3\\u8FB9\\u4F1A\\u8F6C\\u6210\\u7C7B\\u4F3C\\u5728 webpack \\u4E2D\\u751F\\u6210\\u4EE3\\u7801\\u7684\\u6A21\\u5757\\u7ED3\\u6784\\uFF0C\\u53EF\\u4EE5\\u770B\\u5230 import \\u88AB\\u8F6C\\u6210\\u4E86 require\\uFF0Cbabel \\u5C3D\\u804C\\u7684\\u628A ES6 \\u8F6C\\u6210\\u4E86 ES5\\uFF0C\\u4EFF\\u4F5B\\u8FD8\\u561F\\u54DD\\u4E86\\u4E00\\u53E5\\u53C8\\u4E0D\\u662F\\u4E0D\\u80FD\\u7528\\u3002\"), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.babeljs.cn/repl/\"\n  }, \"babel \\u6D4B\\u8BD5\\u5730\\u5740\")), mdx(\"a\", {\n    \"target\": \"_blank\",\n    \"href\": \"https://codesandbox.io/s/static-4ed88?fontsize=14\"\n  }, \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"src\": \"https://codesandbox.io/static/img/play-codesandbox.svg\"\n  })), mdx(\"iframe\", {\n    src: \"https://codesandbox.io/embed/babel-require-import-4ed88?fontsize=14\",\n    title: \"babel-require-import\",\n    allow: \"geolocation; microphone; camera; midi; vr; accelerometer; gyroscope; payment; ambient-light-sensor; encrypted-media\",\n    style: {\n      width: '100%',\n      height: 500,\n      border: 0,\n      borderRadius: 4,\n      overflow: 'hidden'\n    },\n    sandbox: \"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"\n  }), mdx(\"p\", null, \"\\u603B\\u7ED3\\u4E0B\\u5C31\\u662F\\u8BF4\\u5E76\\u4E0D\\u662F webpack \\u652F\\u6301\\u7684\\u8FD9\\u51E0\\u79CD\\u52A0\\u8F7D\\u6A21\\u5757\\u90FD\\u53EF\\u4EE5\\u63A5\\u53D7\\uFF0C\\u90FD\\u80FD\\u591F\\u517C\\u5BB9\\uFF0C\\u800C\\u662F\\u7531\\u4E8E Babel \\u5728\\u4ECE ES6 \\u8F6C\\u5230 ES5 \\u7684\\u8FC7\\u7A0B\\u4E2D\\uFF0C\\u4F7F\\u7528\\u8BED\\u6CD5\\u8F6C\\u6362\\u7684\\u65B9\\u5F0F\\uFF0C\\u518D\\u52A0\\u4E0A\\u8F85\\u52A9\\u51FD\\u6570\\u7684\\u652F\\u6301\\uFF0C\\u4ECE\\u4E2D\\u95F4\\u5C42\\u517C\\u5BB9\\u4E86\\u591A\\u79CD\\u5199\\u6CD5\\u3002\"), mdx(\"h2\", null, \"\\u4E09\\u3001 \\u6807\\u51C6\\u7684\\u4EA7\\u751F\\u573A\\u666F\\uFF0C\\u600E\\u4E48\\u53BB\\u89E3\\u51B3\\u95EE\\u9898\"), mdx(\"p\", null, \"\\u5F88\\u591A\\u89C4\\u8303\\u548C\\u6807\\u51C6\\u73B0\\u5728\\u5E76\\u4E0D\\u662F\\u8FC7\\u65F6\\u6216\\u8005\\u4E0D\\u80FD\\u7528\\uFF0C\\u90FD\\u662F\\u5341\\u5206\\u4F18\\u79C0\\u7684\\u89E3\\u51B3\\u65B9\\u6848\\uFF0C\\u90FD\\u6709\\u5341\\u5206\\u5177\\u4F53\\u9002\\u7528\\u7684\\u4F7F\\u7528\\u573A\\u666F\\u3002\"), mdx(\"p\", null, \"\\u672C\\u6765\\u5199\\u4E86\\u5F88\\u591A\\u5173\\u4E8E\\u5404\\u4E2A\\u6807\\u51C6\\u7684\\u6F14\\u8FDB\\u548C\\u5B9E\\u73B0\\uFF0C\\u4F46\\u662F\\u56DE\\u60F3\\u4E86\\u4E00\\u4E0B\\u597D\\u50CF\\u4E0D\\u662F\\u60F3\\u8BF4\\u8FD9\\u4E9B\\uFF0C\\u800C\\u4E14\\u8FD9\\u4E9B\\u968F\\u4FBF\\u627E\\u4E2A\\u535A\\u5BA2\\u4E5F\\u90FD\\u80FD\\u8BF4\\u7684\\u66F4\\u6E05\\u695A\\u3002\\u6240\\u4EE5\\u5148\\u8BF4\\u4E0B\\u51E0\\u4E2A\\u6807\\u51C6\\u662F\\u600E\\u6837\\u7684\\u3002\"), mdx(\"h3\", null, \"1. AMD\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"define([\\\"a\\\", \\\"b\\\"], function(a, b) { \\n\\xA0 \\xA0 b.foo()\\n});\\n\")), mdx(\"p\", null, \"\\u4E00\\u822C\\u4F7F\\u7528 require.js \\u8FD9\\u4E2A\\u5E93\\u6765\\u5904\\u7406\"), mdx(\"h3\", null, \"2. CMD\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"define(function(require, exports, module) {\\n    var a = require('./a'); //\\u5728\\u9700\\u8981\\u65F6\\u7533\\u660E\\n    a.method_1();\\n    exports.add = function() {}\\n});\\n\")), mdx(\"p\", null, \"\\u4E00\\u822C\\u4F7F\\u7528 sea.js \\u8FD9\\u4E2A\\u5E93\\u6765\\u5904\\u7406\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"AMD, CMD \\u662F\\u7528\\u95ED\\u5305\\u7684\\u5F62\\u5F0F\\u9694\\u79BB\\u6A21\\u5757\\uFF0C\\u540C\\u65F6\\u52A0\\u4E0A\\u5F02\\u6B65\\u5904\\u7406\\u6765\\u9002\\u5E94\\u6D4F\\u89C8\\u5668\\u7AEF\")), mdx(\"h3\", null, \"3. Commonjs\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"var math = require('math');\\nexports.result = math.add(2,3);\\n\")), mdx(\"p\", null, \"\\u4E00\\u822C\\u76F4\\u63A5\\u5728\\u540C\\u4E00\\u4E2A\\u6587\\u4EF6\\u4E2D\\uFF0C\\u6216\\u8005 node \\u7AEF\"), mdx(\"h3\", null, \"4. \", mdx(\"strong\", {\n    parentName: \"h3\"\n  }, \"esModule\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-javascript\"\n  }, \"import defaultExport from \\\"module-name\\\";\\nimport * as name from \\\"module-name\\\";\\nimport { export } from \\\"module-name\\\";\\nimport { export as alias } from \\\"module-name\\\";\\nimport { export1 , export2 } from \\\"module-name\\\";\\nimport { export1 , export2 as alias2 , [...] } from \\\"module-name\\\";\\nimport defaultExport, { export [ , [...] ] } from \\\"module-name\\\";\\nimport defaultExport, * as name from \\\"module-name\\\";\\nimport \\\"module-name\\\";\\n\\nexport { name1, name2, \\u2026, nameN };\\nexport { variable1 as name1, variable2 as name2, \\u2026, nameN };\\nexport let name1, name2, \\u2026, nameN; // also var\\nexport let name1 = \\u2026, name2 = \\u2026, \\u2026, nameN; // also var, const\\nexport function FunctionName() {...}\\nexport class ClassName {...}\\n\\nexport default expression;\\nexport default function (\\u2026) { \\u2026 } // also class, function*\\nexport default function name1(\\u2026) { \\u2026 } // also class, function*\\nexport { name1 as default, \\u2026 };\\n\\nexport * from \\u2026;\\nexport { name1, name2, \\u2026, nameN } from \\u2026;\\nexport { import1 as name1, import2 as name2, \\u2026, nameN } from \\u2026;\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"ECMAScript2015 \"), \"\\u89C4\\u5B9A\\u4E86 Javascript \\u7684\\u6807\\u51C6\\uFF0C\\u53C9\\u7740\\u8170\\u7B49\\u7740\\u522B\\u4EBA\\u6539\\u6210\\u81EA\\u5DF1\\u7684\\u89C4\\u8303\\u3002\"), mdx(\"p\", null, \"\\u73B0\\u5728\\u5927\\u90E8\\u5206\\u90FD\\u662F\\u9884\\u7F16\\u8BD1\\u5DE5\\u5177\\uFF0C\\u6240\\u4EE5\\u5E38\\u5E38\\u6253\\u4EA4\\u9053\\u7684\\u662F \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Commonjs\"), \" \\u548C \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"esModule\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u4EE5\\u4E0A\\u80FD\\u770B\\u5230\\u524D\\u7AEF\\u7684\\u5F88\\u591A\\u5DE5\\u7A0B\\u5316\\u65B9\\u6848\\u591A\\u4E48\\u53D7\\u5230\\u6D4F\\u89C8\\u5668\\u8FD9\\u6837\\u7684\\u7F51\\u7EDC\\u534F\\u8BAE\\u9A71\\u52A8\\u5E94\\u7528\\u7684\\u9650\\u5236\")), mdx(\"h2\", null, \"\\u56DB\\u3001 \\u8BF4\\u4E86\\u8FD9\\u4E48\\u591A\"), mdx(\"p\", null, \"\\u5176\\u5B9E\\u6700\\u91CD\\u8981\\u7684\\u60F3\\u8BF4\\uFF0C\\u5199\\u4EE3\\u7801\\u7684\\u65F6\\u5019\\u4E0D\\u80FD\\u4E0D\\u77E5\\u5176\\u6240\\u4EE5\\u7136\\uFF0C\\u5728\\u73B0\\u5728\\u5DE5\\u7A0B\\u5316\\u7A0B\\u5EA6\\u7279\\u522B\\u9AD8\\u7684\\u65F6\\u4EE3\\uFF0C\\u5F88\\u591A\\u914D\\u7F6E\\u90FD\\u6709\\u5341\\u5206\\u6210\\u719F\\u7684\\u811A\\u624B\\u67B6\\u5DE5\\u5177\\uFF0C\\u4E00\\u884C\\u4EE3\\u7801\\u5F00\\u7BB1\\u5373\\u7528\\u7684\\u4F53\\u9A8C\\u3002\\u4F46\\u662F\\u8FD9\\u4E9B\\u4E1C\\u897F\\u90FD\\u662F\\u8F85\\u52A9\\u7684\\u5DE5\\u5177\\u7BB1\\uFF0C\\u6211\\u4EEC\\u5373\\u5C06\\u79C3\\u9876\\u7684\\u827A\\u672F\\u5BB6\\u66F4\\u9700\\u8981\\u6CE8\\u91CD\\u57FA\\u7840\\uFF0C\\u4E0D\\u7136\\u5F88\\u591A\\u65F6\\u5019\\u9879\\u76EE\\u62A5\\u9519\\u90FD\\u4F1A\\u8BA9\\u81EA\\u5DF1\\u4E0D\\u77E5\\u6240\\u63AA\\uFF0C\\u6216\\u8005\\u4F1A\\u51FA\\u73B0\\u201C\\u660E\\u660E\\u81EA\\u5DF1\\u5F04\\u5F97\\u6CA1\\u9519\\u600E\\u4E48\\u8FD8\\u662F\\u6CA1\\u6CD5\\u8FD0\\u884C\\uFF0C\\u4E00\\u9635\\u9F13\\u6363\\u540E\\u6709\\u83AB\\u540D\\u5176\\u5999\\u6210\\u529F\\u8FD0\\u884C\\u7684\\u5947\\u5999\\u8FC7\\u7A0B\\u201D\\u3002\\u800C\\u5E94\\u63A5\\u4E0D\\u6687\\u7684\\u5DE5\\u5177\\u548C\\u6846\\u67B6\\u5C31\\u50CF\\u662F\\u65F6\\u4EE3\\u7684\\u6D2A\\u6D41\\uFF0C\\u4F60\\u552F\\u4E00\\u80FD\\u8FFD\\u7684\\u4E0A\\u7684\\u662F\\u81EA\\u5DF1\\u89E3\\u51B3\\u95EE\\u9898\\u7684\\u80FD\\u529B\\u3002\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"isCreatedByStatefulCreatePages":false,"id":"78770404-d59b-5014-aa22-7b996074ae36","prev":{"fileAbsolutePath":"D:/ubug/storybook/content/blog/project-readme.md","id":"2434c3dc-a8ef-5e9a-bf85-7ee3504df40b","parent":{"name":"project-readme","sourceInstanceName":"blog"},"excerpt":"想分享的是自己在团队内推行的一个项目说明，尤其是多项目切换和多人协作的工作环境。 1. 咋想的 项目的声明周期包括初始化、开发、迭代、部署、交接等，一个维护良好的项目的这些流程不可能随意混乱。在 git 仓库托管大部分项目的背景下，readme 一般作为一个 work board…","fields":{"title":"📒 项目说明怎么写 - Readme 的自我修养","slug":"/blog/project-readme","description":"项目的门面，项目的第一眼，交接的核心，质量的基础，沉淀和总结的关键，写好一个 ReadMe 是一个程序员的基本要求。","date":"2019-09-10","redirects":null,"datetime":"2019-09-10 20:06:21","categories":["code"],"series":null,"tags":["技巧","最佳实践","协作"],"status":"online"},"frontmatter":{"published":null,"tags":["技巧","最佳实践","协作"],"theme":null,"slug":"project-readme","date":"2019-09-10 20:06:21"},"body":"const _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsx mdx */\n\nconst _frontmatter = {\n  \"slug\": \"project-readme\",\n  \"title\": \"📒 项目说明怎么写 - Readme 的自我修养\",\n  \"date\": \"2019-09-10 20:06:21\",\n  \"author\": \"Ubug\",\n  \"description\": \"项目的门面，项目的第一眼，交接的核心，质量的基础，沉淀和总结的关键，写好一个 ReadMe 是一个程序员的基本要求。\",\n  \"categories\": [\"code\"],\n  \"tags\": [\"技巧\", \"最佳实践\", \"协作\"],\n  \"banner\": \"./banner.jpg\"\n};\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return mdx(\"div\", props);\n};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  let {\n      components\n    } = _ref,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"hr\", null), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u60F3\\u5206\\u4EAB\\u7684\\u662F\\u81EA\\u5DF1\\u5728\\u56E2\\u961F\\u5185\\u63A8\\u884C\\u7684\\u4E00\\u4E2A\\u9879\\u76EE\\u8BF4\\u660E\\uFF0C\\u5C24\\u5176\\u662F\\u591A\\u9879\\u76EE\\u5207\\u6362\\u548C\\u591A\\u4EBA\\u534F\\u4F5C\\u7684\\u5DE5\\u4F5C\\u73AF\\u5883\\u3002\")), mdx(\"hr\", null), mdx(\"h2\", null, \"1. \\u548B\\u60F3\\u7684\"), mdx(\"p\", null, \"\\u9879\\u76EE\\u7684\\u58F0\\u660E\\u5468\\u671F\\u5305\\u62EC\\u521D\\u59CB\\u5316\\u3001\\u5F00\\u53D1\\u3001\\u8FED\\u4EE3\\u3001\\u90E8\\u7F72\\u3001\\u4EA4\\u63A5\\u7B49\\uFF0C\\u4E00\\u4E2A\\u7EF4\\u62A4\\u826F\\u597D\\u7684\\u9879\\u76EE\\u7684\\u8FD9\\u4E9B\\u6D41\\u7A0B\\u4E0D\\u53EF\\u80FD\\u968F\\u610F\\u6DF7\\u4E71\\u3002\\u5728 git \\u4ED3\\u5E93\\u6258\\u7BA1\\u5927\\u90E8\\u5206\\u9879\\u76EE\\u7684\\u80CC\\u666F\\u4E0B\\uFF0Creadme \\u4E00\\u822C\\u4F5C\\u4E3A\\u4E00\\u4E2A work board \\u89D2\\u8272\\uFF0C\\u6807\\u8BB0\\u6BCF\\u4E2A\\u91CD\\u8981\\u7684\\u8BF4\\u660E\\u3002\\u4ECE\\u6211\\u76EE\\u524D\\u7684\\u5DE5\\u4F5C\\u4E2D\\uFF0C\\u804A\\u804A\\u600E\\u4E48\\u624D\\u80FD\\u8F83\\u597D\\u7684\\u7EF4\\u62A4\\u4E00\\u4EFD\\u4EA7\\u54C1\\u6587\\u6863\\uFF0C\\u4E0D\\u81F3\\u4E8E\\u5FEB\\u901F\\u4E0A\\u624B\\u4E24\\u5E74\\u524D\\u7684\\u8001\\u65E7\\u670D\\u52A1\\uFF0C\\u4E0D\\u81F3\\u4E8E\\u79BB\\u804C\\u4E00\\u5468\\u641E\\u4E0D\\u5B9A\\u4EA4\\u63A5\\u3002\"), mdx(\"p\", null, \"\\u4E00\\u4E2A\\u4EA7\\u54C1\\u6587\\u6863\\u7684\\u8BE6\\u7EC6\\u7A0B\\u5EA6\\u4E0E\\u590D\\u6742\\u7A0B\\u5EA6\\u3001\\u6D89\\u53CA\\u4EBA\\u6570\\u3001\\u91CD\\u8981\\u6027\\u3001\\u76F8\\u5173\\u8054\\u5EA6\\u6709\\u5173\\u7CFB\\uFF0C\\u7B80\\u5355\\u7684\\u4E00\\u4E2A\\u9879\\u76EE\\u4E5F\\u4E0D\\u9700\\u8981\\u957F\\u7BC7\\u7D2F\\u724D\\u7684\\u8BF4\\u4E2A\\u6CA1\\u5B8C\\uFF0C\\u5B9E\\u73B0\\u548C\\u903B\\u8F91\\u90FD\\u653E\\u5230\\u4EE3\\u7801\\u91CC\\uFF0C\\u6587\\u6863\\u662F\\u4F5C\\u4E3A\\u4E00\\u4E2A\\u8BF4\\u660E\\u4E66\\u5B58\\u5728\\u3002\"), mdx(\"h2\", null, \"2. \\u522B\\u4EBA\\u5BB6\\u7684\"), mdx(\"p\", null, \"GitHub \\u4E0A\\u7684\\u5F00\\u6E90\\u9879\\u76EE\\u6839\\u636E\\u4E0D\\u540C\\u7684\\u7528\\u9014\\uFF0C\\u4E00\\u822C\\u6709\\u662F\\u4EC0\\u4E48\\u548C\\u600E\\u4E48\\u7528\\u7684\\u5206\\u7C7B\\uFF0C\\u5305\\u62EC\\u7B80\\u5355\\u4ECB\\u7ECD\\u3001Features\\u3001Usage(Get Started)\\u3001Demo\\u3001ChangeLog\\u3001License\"), mdx(\"p\", null, \"\\u5176\\u4E2D get started \\u6709\\u7684\\u662F\\u600E\\u4E48\\u7528\\u63A5\\u53E3\\uFF0C\\u6709\\u7684\\u662F\\u600E\\u4E48\\u5728\\u6B64\\u57FA\\u7840\\u5F00\\u53D1\\u3002\\u5F53\\u7136\\u6211\\u4EEC\\u81EA\\u5DF1\\u7684\\u9879\\u76EE\\u548C\\u8FD9\\u4E9B\\u5F00\\u653E\\u7684\\u9879\\u76EE\\u4E0D\\u540C\\uFF0C\\u4F46\\u662F\\u4E5F\\u662F\\u80FD\\u501F\\u9274\\u4E0B\\u3002\"), mdx(\"h2\", null, \"3. \\u6211\\u4EEC\\u8981\\u8FBE\\u6210\\u7684\\u76EE\\u7684\"), mdx(\"p\", null, \"\\u6211\\u4EEC\\u5199\\u8FD9\\u4E2A\\u6587\\u6863\\u7684\\u76EE\\u7684\\u5176\\u5B9E\\u8BF4\\u767D\\u4E86\\u662F\\u9762\\u5411\\u79BB\\u804C\\u7F16\\u7A0B\\uFF0C\\u522B\\u4EBA\\u751A\\u81F3\\u81EA\\u5DF1\\u770B\\u5230\\u8FD9\\u4E2A\\u6587\\u6863\\u90FD\\u4E0D\\u9700\\u8981\\u6307\\u5BFC\\u5C31\\u80FD\\u5F88\\u597D\\u7684\\u4EA4\\u63A5\\uFF0C\\u5F53\\u7136\\u8FD9\\u4E2A\\u4E1C\\u897F\\u662F\\u8BA9\\u8D1F\\u8D23\\u534F\\u4F5C\\u7684\\u5C0F\\u4F19\\u4F34\\u3001\\u540E\\u7EED\\u7EF4\\u62A4\\u7684\\u5C0F\\u4F19\\u4F34\\u3001\\u90E8\\u7F72\\u5230\\u7EBF\\u4E0A\\u7684\\u5C0F\\u4F19\\u4F34\\u90FD\\u80FD\\u8212\\u5FC3\\u7684\\uFF0C\\u4E0D\\u591A\\u7684\\u6587\\u5B57\\u5C31\\u80FD\\u7701\\u4E0B\\u5F88\\u591A\\u53E3\\u820C\\u4E4B\\u4E89\\u3002\"), mdx(\"p\", null, \"\\u5177\\u4F53\\u8981\\u4ECB\\u7ECD\\u7684\\u4E1C\\u897F\\u6709\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u9879\\u76EE\\u662F\\u5E72\\u561B\\u7684\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u4E3A\\u4EC0\\u4E48\\u5F00\\u8FD9\\u4E2A\\u9879\\u76EE\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u9879\\u76EE\\u53C2\\u8003\\u7684\\u5177\\u4F53\\u6587\\u6863\\u548C\\u9700\\u6C42\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u600E\\u4E48\\u624D\\u80FD\\u8BA9\\u9879\\u76EE\\u5B89\\u5168\\u8DD1\\u8D77\\u6765\\u3001\\u505C\\u4E0B\\u6765\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u9700\\u8981\\u4F9D\\u8D56\\u54EA\\u4E9B\\u5176\\u4ED6\\u670D\\u52A1\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u600E\\u4E48\\u624D\\u80FD\\u672C\\u5730\\u8C03\\u8BD5\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u9879\\u76EE\\u7684\\u57FA\\u672C\\u76EE\\u5F55\\u548C\\u67B6\\u6784\\u8BF4\\u660E\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u6CE8\\u610F\\u4E8B\\u9879\\u548C\\u4E00\\u822C\\u5F02\\u5E38\\u8BF4\\u660E\")), mdx(\"p\", null, \"\\u505A\\u5230\\u4E0A\\u9762\\u7684\\u6761\\u76EE\\uFF0C\\u57FA\\u672C\\u4E0A\\u4E5F\\u80FD\\u5927\\u81F4\\u660E\\u767D\\u9879\\u76EE\\u7684\\u6574\\u4F53\\u4E86\\u3002\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5F00\\u53D1\\u73AF\\u5883\\u3001\\u4F9D\\u8D56\\u51C6\\u5907\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5F00\\u53D1\\u542F\\u52A8\\u3001\\u9884\\u89C8\\u3001\\u8C03\\u8BD5\\u6B65\\u9AA4\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u6280\\u672F\\u9009\\u578B\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u6838\\u5FC3\\u4EE3\\u7801\\u529F\\u80FD\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u9879\\u76EE\\u76EE\\u5F55\\u7ED3\\u6784\\u548C\\u91CD\\u70B9\\u6587\\u4EF6\\u8BF4\\u660E\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5F00\\u53D1\\u6CE8\\u610F\\u4E8B\\u9879\")), mdx(\"p\", null, \"\\u4E0A\\u9762\\u8FD9\\u4E9B\\u8BE6\\u7EC6\\u7684\\u4ECE\\u96F6\\u5F00\\u59CB\\u5F00\\u53D1\\u6B65\\u9AA4\\uFF0C\\u65B9\\u4FBF\\u81EA\\u5DF1\\u8FC1\\u79FB\\u3001\\u518D\\u7EF4\\u62A4\\uFF0C\\u65B9\\u4FBF\\u522B\\u4EBA\\u63A5\\u624B\\u9879\\u76EE\\u3002\\u5C24\\u5176\\u662F\\u4F9D\\u8D56\\u5F88\\u591A\\u524D\\u671F\\u4F9D\\u8D56\\u51C6\\u5907\\u7684\\u5F00\\u53D1\\u6A21\\u5F0F\\uFF0C\\u6BD4\\u5982\\u4E00\\u4E2A\\u6838\\u5FC3\\u529F\\u80FD\\uFF0C\\u9700\\u8981\\u672C\\u5730\\u989D\\u5916\\u542F\\u52A8\\u591A\\u4E2A mock \\u6570\\u636E\\u5E93\\u3001mock \\u63A5\\u53E3\\u3001\\u914D\\u7F6E\\u8C03\\u8BD5\\u73AF\\u5883\\u7B49\\uFF0C\\u8FD9\\u4E2A\\u65F6\\u5019\\u4E00\\u4E2A command list \\u771F\\u7684\\u4F1A\\u5C06\\u51C6\\u5907\\u65F6\\u95F4\\u4ECE\\u4E00\\u4E2A\\u5C0F\\u65F6\\u8FD8\\u4E0D\\u77E5\\u9053\\u6709\\u6CA1\\u6709\\u5B8C\\u6574\\u7F29\\u51CF\\u5230 5 \\u5206\\u949F\\u51C6\\u5907\\u5B8C\\u6BD5\\u3002\\uFF08PS\\uFF1A\\u5176\\u5B9E\\u5982\\u679C\\u65E5\\u5E38\\u5F00\\u53D1\\u9700\\u8981\\u8FD9\\u4E48\\u4E9B\\u914D\\u5957 server \\u542F\\u52A8\\uFF0C\\u9700\\u8981\\u624B\\u52A8\\u5F00\\u53D1\\u4E00\\u4E2A\\u547D\\u4EE4\\u884C\\u4E4B\\u7C7B\\u7684\\u5DE5\\u5177\\u4F5C\\u4E3A\\u811A\\u624B\\u67B6\\u6765\\u7F29\\u51CF\\u5230 1 \\u5206\\u949F\\u65F6\\u95F4\\u3002\\uFF09\"), mdx(\"h2\", null, \"4. \\u56E2\\u961F\\u4E2D\\u7684\\u6807\\u51C6\"), mdx(\"p\", null, \"\\u9879\\u76EE\\u6587\\u6863\\u5982\\u679C\\u8131\\u79BB\\u4E86\\u56E2\\u961F\\u7684\\u73AF\\u5883\\u4E5F\\u6CA1\\u4EC0\\u4E48\\u610F\\u4E49\\uFF0C\\u6240\\u4EE5\\u56E2\\u961F\\u600E\\u4E48\\u7EF4\\u62A4\\u9879\\u76EE\\u7684\\uFF0C\\u8001\\u9879\\u76EE\\u600E\\u4E48\\u5FEB\\u901F\\u4E0A\\u624B\\uFF0C\\u6BCF\\u4E2A\\u9879\\u76EE\\u600E\\u4E48\\u90E8\\u7F72\\u3001\\u5F00\\u53D1\\u90FD\\u662F\\u6709\\u4E00\\u4E2A\\u901A\\u7528\\u6280\\u672F\\u6808\\u7684\\uFF0C\\u5E76\\u4E0D\\u5B58\\u5728\\u4E00\\u4E2A\\u6807\\u51C6\\u7684\\u6A21\\u7248\\u6587\\u6863\\uFF0C\\u5C24\\u5176\\u662F\\u9879\\u76EE\\u5FEB\\u901F\\u8FED\\u4EE3\\uFF0C\\u6587\\u6863\\u7684\\u7EF4\\u62A4\\u5F88\\u591A\\u65F6\\u5019\\u4E5F\\u662F\\u529B\\u4E0D\\u4ECE\\u5FC3\\u3002\\u5C24\\u5176\\u9879\\u76EE\\u8D76\\u5DE5\\u3001\\u56E2\\u961F\\u5F88\\u5C0F\\u3001\\u6280\\u672F\\u6808\\u7B80\\u5355\\u7684\\u60C5\\u51B5\\uFF0C\\u6587\\u6863\\u4E5F\\u5E76\\u4E0D\\u662F\\u975E\\u8981\\u4E8B\\u65E0\\u5DE8\\u7EC6\\u3002\"), mdx(\"p\", null, \"\\u4EB2\\u8EAB\\u4F53\\u4F1A\\u4E00\\u4E2A\\u5C0F\\u516C\\u53F8\\uFF0C\\u4ECE\\u7B80\\u5355\\u53E3\\u5934\\u4EA4\\u63A5\\u5373\\u53EF\\uFF0C\\u5230\\u753B\\u5230\\u767D\\u677F\\u4E0A\\u624D\\u80FD\\u8BF4\\u6E05\\u5168\\u90E8\\u670D\\u52A1\\uFF0C\\u6700\\u540E\\u5168\\u90FD\\u6807\\u51C6\\u5316\\u5230\\u6587\\u6863\\u7684\\u4E00\\u4E2A\\u8FC7\\u7A0B\\u3002\"), mdx(\"h2\", null, \"5. \\u4E00\\u4E2A\\u7B80\\u5355\\u7684\\u793A\\u4F8B\"), mdx(\"p\", null, \"\\u4E0B\\u9762\\u662F\\u5C0F\\u56E2\\u961F\\u4E4B\\u95F4\\uFF0C\\u5185\\u90E8\\u9879\\u76EE\\u8F83\\u591A\\u7684\\u60C5\\u51B5\\u4E0B\\u7684\\u4E00\\u4E2A\\u793A\\u4F8B\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-md\"\n  }, \"----\\n\\n# \\u9879\\u76EE\\u540D\\u79F0\\n\\n> \\u9879\\u76EE\\u529F\\u80FD\\u7B80\\u4ECB\\u3002\\uFF08\\u8BF4\\u660E\\uFF1A\\u7528\\u7CBE\\u7B80\\u7684\\u6587\\u5B57\\u63CF\\u8FF0\\u672C\\u9879\\u76EE\\u76EE\\u524D\\u7248\\u672C\\u3001\\u4E3B\\u8981\\u529F\\u80FD\\u3001\\u90E8\\u7F72\\u4F4D\\u7F6E\\u3001\\u76EE\\u524D\\u7EF4\\u62A4\\u4EBA\\u5458\\u7B49\\uFF09\\n\\n[TOC] \\uFF08\\u8BF4\\u660E\\uFF1A\\u6587\\u6863\\u7684\\u76EE\\u5F55\\u3002\\u8F83\\u957F\\u7684\\u6587\\u6863\\u6700\\u597D\\u589E\\u52A0\\u6587\\u6863\\u7D22\\u5F15\\u76EE\\u5F55\\uFF09\\n\\n----\\n\\n## 1. \\u80CC\\u666F\\n\\n### 1.1 \\u9879\\u76EE\\u7684\\u5F00\\u53D1\\u80CC\\u666F\\n\\nxx\\n\\n### 1.2 \\u9700\\u8981\\u89E3\\u51B3\\u7684\\u95EE\\u9898\\n\\nxx\\n\\n### 1.3 \\u4EA7\\u54C1\\u6587\\u6863\\u4F4D\\u7F6E(GIT)\\n\\nxx\\n\\n### 1.4 \\u4E3B\\u8981\\u53C2\\u8003\\u63A5\\u53E3\\u6587\\u6863\\u4F4D\\u7F6E(GIT)\\n\\nxx\\n\\n\\uFF08\\u4EE5\\u4E0A\\u9009\\u5199\\uFF09\\n\\n----\\n\\n## 2. \\u5B89\\u88C5/\\u90E8\\u7F72\\u8BF4\\u660E\\n\\n\\u673A\\u5668\\u7C7B\\u578B\\u3001\\u670D\\u52A1\\u7C7B\\u578B\\u3001\\u5DE5\\u4F5C\\u6A21\\u5F0F\\n\\n\\uFF08\\u4ECE\\u5E72\\u51C0\\u7684\\u670D\\u52A1\\u5668\\u673A\\u5668\\uFF0C\\u5230\\u80FD\\u6B63\\u5E38\\u8FD0\\u884C\\u670D\\u52A1\\u7684\\u5168\\u90E8\\u73AF\\u5883\\u5B89\\u88C5\\u548C\\u914D\\u7F6E\\uFF0C\\u5305\\u62EC\\u4EE3\\u7801\\u66F4\\u65B0\\u3001\\u542F\\u52A8\\u505C\\u6B62\\u3001\\u65E5\\u5FD7\\u4FDD\\u5B58\\uFF09\\n\\n### 2.1 \\u5B89\\u88C5\\u673A\\u5668\\n\\nxx\\n\\n### 2.2 \\u73AF\\u5883\\u51C6\\u5907\\n\\nxx\\n\\n### 2.3 \\u4EE3\\u7801\\u90E8\\u7F72\\n\\nxx\\n\\n### 2.4 \\u670D\\u52A1\\u542F\\u52A8/\\u505C\\u6B62/\\u81EA\\u542F\\u52A8\\n\\nxx\\n\\n### 2.5 \\u6CE8\\u610F\\u4E8B\\u9879/tips\\n\\nxx\\n\\n----\\n\\n## 3. \\u5F00\\u53D1\\u8BF4\\u660E\\n\\n### 3.1 \\u521D\\u59CB\\u5316\\u4EE3\\u7801\\u4ED3\\u5E93\\n\\ngit clone gitlaburl libname\\n\\n### 3.2 \\u6280\\u672F\\u9009\\u578B\\n\\n\\u4F7F\\u7528\\u4E86\\u4EC0\\u4E48\\u6846\\u67B6\\uFF0C\\u67B6\\u6784\\u7B49\\n\\n### 3.3 \\u672C\\u5730\\u73AF\\u5883\\n\\n\\uFF08\\u4ECE\\u5E72\\u51C0\\u7684\\u5F00\\u53D1\\u673A\\u5668\\uFF0C\\u5230\\u80FD\\u6B63\\u5E38\\u8FDB\\u884C\\u5F00\\u53D1\\u7684\\u5168\\u90E8\\u73AF\\u5883\\u5B89\\u88C5\\u548C\\u914D\\u7F6E\\uFF0C\\u65B9\\u4FBF\\u5DE5\\u4F5C\\u8F6C\\u79FB\\u4EA4\\u63A5\\uFF09\\n\\n\\u8F6F\\u4EF6/\\u76F8\\u5173\\u914D\\u7F6E/\\u5F00\\u53D1\\u9884\\u89C8\\n\\n\\u5176\\u4ED6\\u8BF4\\u660E\\n\\n### 3.4 \\u5EFA\\u8BAE\\u5F00\\u53D1\\u6B65\\u9AA4\\n\\n\\u5728\\u90A3\\u4E2A\\u6587\\u4EF6\\u5939\\u4E0B\\u6267\\u884C\\u4EC0\\u4E48\\u547D\\u4EE4\\uFF0C\\u5230\\u4EC0\\u4E48\\u9875\\u9762\\u9884\\u89C8\\u6548\\u679C\\uFF1B\\n\\u5F00\\u53D1\\u4EC0\\u4E48\\u5DE5\\u5177\\u80FD\\u65B9\\u4FBF\\u5F00\\u53D1\\n\\n----\\n\\n## 4. \\u672C\\u5730\\u76EE\\u5F55\\n\\n\\u76EE\\u5F55\\u7ED3\\u6784\\u4ECB\\u7ECD\\n\\n## 5. \\u5176\\u4ED6\\n\")));\n}\n;\nMDXContent.isMDXComponent = true;"},"next":{"fileAbsolutePath":"D:/ubug/storybook/content/blog/leet-code/two-pointers.md","id":"cde50943-277c-50d3-8fec-e85dd49933c4","parent":{"name":"two-pointers","sourceInstanceName":"blog"},"excerpt":"1. TwoPointers 双指针 双指针在算法中很常见的一个处理技巧，当然并不是说双指针是一个固定的银弹，只是很多的算法中会使用到两个指针来实现一个更好的算法复杂度。 一般在业务中，如果性能要求没那么变态的场景，基本上一个指针遍历，不行就两个循环，总能解决一般业务。 但是在大数据比如一个超大的数组，遍历一遍的代价已经很大了，能一遍解决最好，所以双指针可能在算法复杂度上更优。 这篇文章也是意识到这样一个方法比较好，目前还并不能总结出一个特别明显的模式，毕竟每个算法的需求不同。…","fields":{"title":"😜 算法双指针","slug":"/blog/two-pointers","description":"算法中又一个比较常见的双指针方法，这篇文章来思考下那些场景用的比较多。","date":"2019-08-25","redirects":null,"datetime":"2019-08-25 21:34:51","categories":["algorithm"],"series":null,"tags":["算法","技巧"],"status":"online"},"frontmatter":{"published":null,"tags":["算法","技巧"],"theme":null,"slug":"two-pointers","date":"2019-08-25 21:34:51"},"body":"const _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsx mdx */\n\nconst codeStr_977 = \"/**\\n * @param {number[]} A\\n * @return {number[]}\\n */\\nvar sortedSquares_m1 = function(A) {\\n  return A.map(v => Math.pow(v, 2)).sort((a,b)=>a-b);\\n};\\n// \\u53CC\\u6307\\u9488\\uFF0C\\u539F\\u5730\\u6392\\u5E8F\\uFF0C\\u590D\\u6742\\u5EA6\\u5F88\\u9AD8\\nvar sortedSquares_m2 = function (A) {\\n  // \\u521D\\u59CB\\u5316\\u9996\\u5C3E\\u6307\\u9488\\n  for (let pStart = 0, pEnd = A.length - 1; ;) {\\n    // \\u6307\\u9488\\u91CD\\u5408\\u7684\\u65F6\\u5019\\uFF0C\\u7ED3\\u675F\\u5E76\\u628A\\u6700\\u540E\\u7684\\u503C\\u653E\\u5230\\u7ED3\\u679C\\u6570\\u7EC4\\n    if (pStart === pEnd) {\\n      A[pStart] = A[pStart] * A[pStart];\\n      break;\\n    }\\n    // \\u8BA1\\u7B97\\u9996\\u5C3E\\u503C\\n    const endVal = A[pEnd] * A[pEnd];\\n    const startVal = A[pStart] * A[pStart];\\n    // \\u8F83\\u5927\\u7684\\u503C\\u653E\\u5165\\u6392\\u5E8F\\uFF0C\\u5BF9\\u5E94\\u7684\\u6307\\u9488\\u5411\\u4E2D\\u95F4\\u79FB\\u52A8\\n    if (endVal > startVal) {\\n      // \\u539F\\u5730\\u8D4B\\u503C\\uFF0C\\u5C3E\\u6307\\u9488\\u76F4\\u63A5\\u8D4B\\u503C\\n      A[pEnd] = endVal;\\n    } else {\\n      // \\u5C06\\u5F00\\u59CB\\u6307\\u9488\\u5BF9\\u5E94\\u7684\\u503C\\uFF0C\\u63D2\\u5165\\u5230\\u540E\\u6307\\u9488\\u4F4D\\u7F6E(\\u7C7B\\u4F3C\\u63D2\\u5165\\u6392\\u5E8F)\\n      // \\u987A\\u5E8F\\u5C06 pstart-pend \\u7684\\u503C\\u524D\\u79FB\\n      for(let mov = pStart;mov<pEnd;mov++){\\n         A[mov] =  A[mov+1]\\n      }\\n      A[pEnd] = startVal;\\n    }\\n    pEnd--;\\n  }\\n  return A;\\n};\\n// \\u53CC\\u6307\\u9488\\uFF0C\\u989D\\u5916\\u6570\\u7EC4\\nvar sortedSquares = function (A) {\\n  // \\u53CC\\u6307\\u9488\\u6392\\u5E8F\\n  const B = [];\\n  // \\u521D\\u59CB\\u5316\\u9996\\u5C3E\\u6307\\u9488\\n  for (let pStart = 0, pEnd = A.length - 1; ;) {\\n    // \\u6307\\u9488\\u91CD\\u5408\\u7684\\u65F6\\u5019\\uFF0C\\u7ED3\\u675F\\u5E76\\u628A\\u6700\\u540E\\u7684\\u503C\\u653E\\u5230\\u7ED3\\u679C\\u6570\\u7EC4\\n    if (pStart === pEnd) {\\n      B.unshift(A[pStart] * A[pStart]);\\n      break;\\n    }\\n    // \\u8BA1\\u7B97\\u9996\\u5C3E\\u503C\\n    const endVal = A[pEnd] * A[pEnd];\\n    const startVal = A[pStart] * A[pStart];\\n    // \\u8F83\\u5927\\u7684\\u503C\\u653E\\u5165\\u6392\\u5E8F\\uFF0C\\u5BF9\\u5E94\\u7684\\u6307\\u9488\\u5411\\u4E2D\\u95F4\\u79FB\\u52A8\\n    if (endVal > startVal) {\\n      B.unshift(endVal);\\n      pEnd--;\\n    } else {\\n      B.unshift(startVal);\\n      pStart++;\\n    }\\n  }\\n  return B;\\n};\\nreturn sortedSquares;\";\nconst codeStr_905 = \"/**\\n * @param {number[]} A\\n * @return {number[]}\\n */\\nvar sortArrayByParity_m1 = function(A) {\\n  let retAry = [];\\n  A.map(r => {\\n    if(r%2 > 0) {\\n      retAry.push(r);\\n    } else {\\n      retAry.unshift(r);\\n    }\\n  })\\n  return retAry;\\n};\\nvar sortArrayByParity = function(A) {\\n  // \\u9996\\u5C3E\\u6307\\u9488\\u5411\\u4E2D\\u95F4\\u79FB\\u52A8\\n  for(let pStart = 0, pEnd = A.length - 1;;){\\n    // \\u6307\\u9488\\u76F8\\u9047\\u4F5C\\u4E3A\\u505C\\u6B62\\u6761\\u4EF6\\n    if(pStart >= pEnd) break;\\n    let startIsEven = A[pStart] % 2 === 0\\n    let endIsEven = A[pEnd] % 2 === 0\\n    // \\u5982\\u679C\\u9996\\u5C3E\\u6307\\u5411\\u7684\\u6570\\u90FD\\u4E0D\\u5BF9\\uFF0C\\u4EA4\\u6362\\n    if(!startIsEven && endIsEven) {\\n      let tmp = A[pStart]\\n      A[pStart] = A[pEnd]\\n      A[pEnd] = tmp\\n      pStart++\\n      pEnd--\\n    } else {\\n      // \\u5982\\u679C\\u4EC5\\u6709\\u5F00\\u59CB\\u5BF9\\uFF0C\\u6216\\u8005\\u7ED3\\u5C3E\\u5BF9\\uFF0C\\u4EC5\\u79FB\\u52A8\\u5BF9\\u5E94\\u4F4D\\u7F6E\\n      // \\u9519\\u8BEF\\u7684\\u6307\\u5411\\u7B49\\u5F85\\u5F00\\u59CB\\u7684\\n      if(startIsEven) {\\n        pStart++\\n      }\\n      if(!endIsEven) {\\n        pEnd--\\n      }\\n    }\\n  }\\n  return A\\n};\\nreturn sortArrayByParity;\";\nconst codeStr_832 = \"/**\\n * @param {number[][]} A\\n * @return {number[][]}\\n */\\n// \\u8FD9\\u4E2A\\u662F\\u6700\\u7B80\\u6D01\\u7684 js \\u8BED\\u6CD5\\uFF0C\\u4E00\\u822C\\u4E0D\\u8003\\u8651\\u7B97\\u6CD5\\u7684\\u4E00\\u884C\\u89E3\\u51B3\\uFF08PS: \\u6027\\u80FD\\u66F4\\u597D\\uFF09\\nvar flipAndInvertImage_m1 = function(A) {\\n  return A.map(row => row.reverse().map(n => 1 - n))\\n};\\nvar flipAndInvertImage = function(A) {\\n  // \\u5FAA\\u73AF\\u884C\\n  for(let i = 0;i < A.length;i++) {\\n    // \\u4E2D\\u95F4\\u6807\\u5FD7\\u4F4D\\n    let middle = A[i].length / 2;\\n    // \\u7B2C\\u4E00\\u4F4D\\u5230\\u4E2D\\u95F4\\u5F00\\u59CB\\u5224\\u65AD\\n    for(let j = 0;j < middle;j++){\\n      // \\u524D\\u9762\\u7684\\u4F4D\\u7F6E\\u5BF9\\u5E94\\u7684\\u540E\\u9762\\u4F4D\\u7F6E\\n      let back = A[i].length - j - 1\\n      // \\u5982\\u679C\\u4E24\\u4E2A\\u503C\\u76F8\\u540C\\uFF0C\\u540C\\u65F6\\u8D4B\\u503C\\u53CD\\u8F6C\\uFF08\\u4E0D\\u540C\\u7684\\u8BDD\\u5C31\\u4E0D\\u9700\\u8981\\u5904\\u7406\\uFF09\\n      if(A[i][j] === A[i][back]){\\n        A[i][j] = A[i][back] = 1 - A[i][j];\\n      }\\n    }\\n  }\\n  return A\\n};\\nreturn flipAndInvertImage;\";\nconst _frontmatter = {\n  \"slug\": \"two-pointers\",\n  \"title\": \"😜 算法双指针\",\n  \"date\": \"2019-08-25 21:34:51\",\n  \"author\": \"Ubug\",\n  \"description\": \"算法中又一个比较常见的双指针方法，这篇文章来思考下那些场景用的比较多。\",\n  \"categories\": [\"algorithm\"],\n  \"tags\": [\"算法\", \"技巧\"],\n  \"banner\": \"./banner.jpg\"\n};\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return mdx(\"div\", props);\n};\nconst layoutProps = {\n  codeStr_977,\n  codeStr_905,\n  codeStr_832,\n  _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  let {\n      components\n    } = _ref,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", null, \"1. TwoPointers \\u53CC\\u6307\\u9488\"), mdx(\"p\", null, \"\\u53CC\\u6307\\u9488\\u5728\\u7B97\\u6CD5\\u4E2D\\u5F88\\u5E38\\u89C1\\u7684\\u4E00\\u4E2A\\u5904\\u7406\\u6280\\u5DE7\\uFF0C\\u5F53\\u7136\\u5E76\\u4E0D\\u662F\\u8BF4\\u53CC\\u6307\\u9488\\u662F\\u4E00\\u4E2A\\u56FA\\u5B9A\\u7684\\u94F6\\u5F39\\uFF0C\\u53EA\\u662F\\u5F88\\u591A\\u7684\\u7B97\\u6CD5\\u4E2D\\u4F1A\\u4F7F\\u7528\\u5230\\u4E24\\u4E2A\\u6307\\u9488\\u6765\\u5B9E\\u73B0\\u4E00\\u4E2A\\u66F4\\u597D\\u7684\\u7B97\\u6CD5\\u590D\\u6742\\u5EA6\\u3002\"), mdx(\"p\", null, \"\\u4E00\\u822C\\u5728\\u4E1A\\u52A1\\u4E2D\\uFF0C\\u5982\\u679C\\u6027\\u80FD\\u8981\\u6C42\\u6CA1\\u90A3\\u4E48\\u53D8\\u6001\\u7684\\u573A\\u666F\\uFF0C\\u57FA\\u672C\\u4E0A\\u4E00\\u4E2A\\u6307\\u9488\\u904D\\u5386\\uFF0C\\u4E0D\\u884C\\u5C31\\u4E24\\u4E2A\\u5FAA\\u73AF\\uFF0C\\u603B\\u80FD\\u89E3\\u51B3\\u4E00\\u822C\\u4E1A\\u52A1\\u3002\"), mdx(\"p\", null, \"\\u4F46\\u662F\\u5728\\u5927\\u6570\\u636E\\u6BD4\\u5982\\u4E00\\u4E2A\\u8D85\\u5927\\u7684\\u6570\\u7EC4\\uFF0C\\u904D\\u5386\\u4E00\\u904D\\u7684\\u4EE3\\u4EF7\\u5DF2\\u7ECF\\u5F88\\u5927\\u4E86\\uFF0C\\u80FD\\u4E00\\u904D\\u89E3\\u51B3\\u6700\\u597D\\uFF0C\\u6240\\u4EE5\\u53CC\\u6307\\u9488\\u53EF\\u80FD\\u5728\\u7B97\\u6CD5\\u590D\\u6742\\u5EA6\\u4E0A\\u66F4\\u4F18\\u3002\"), mdx(\"p\", null, \"\\u8FD9\\u7BC7\\u6587\\u7AE0\\u4E5F\\u662F\\u610F\\u8BC6\\u5230\\u8FD9\\u6837\\u4E00\\u4E2A\\u65B9\\u6CD5\\u6BD4\\u8F83\\u597D\\uFF0C\\u76EE\\u524D\\u8FD8\\u5E76\\u4E0D\\u80FD\\u603B\\u7ED3\\u51FA\\u4E00\\u4E2A\\u7279\\u522B\\u660E\\u663E\\u7684\\u6A21\\u5F0F\\uFF0C\\u6BD5\\u7ADF\\u6BCF\\u4E2A\\u7B97\\u6CD5\\u7684\\u9700\\u6C42\\u4E0D\\u540C\\u3002\"), mdx(\"h2\", null, \"2. \\u5E38\\u89C1\\u7684\\u7B97\\u6CD5\\u573A\\u666F\"), mdx(\"p\", null, \"LeetCode \\u6570\\u7EC4\\u4E2D\\u6709\\u5F88\\u591A\\u7B80\\u5355\\u9898\\u76EE\\u4F7F\\u7528\\u8FD9\\u4E2A\\u65B9\\u6CD5\\uFF0C\\u6240\\u4EE5\\u5E94\\u8BE5\\u6BD4\\u8F83\\u5BB9\\u6613\\u60F3\\u5230\\u3002\"), mdx(\"h3\", null, \"2.1 \\u300A977. \\u6709\\u5E8F\\u6570\\u7EC4\\u7684\\u5E73\\u65B9\\u300B\"), mdx(\"p\", null, \"[\\u7B80\\u5355\\u96BE\\u5EA6 70.7%]\", \" 2019-10-24 16:15:36\"), mdx(\"p\", null, \"\\u7ED9\\u5B9A\\u4E00\\u4E2A\\u6309\\u975E\\u9012\\u51CF\\u987A\\u5E8F\\u6392\\u5E8F\\u7684\\u6574\\u6570\\u6570\\u7EC4 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"A\"), \"\\uFF0C\\u8FD4\\u56DE\\u6BCF\\u4E2A\\u6570\\u5B57\\u7684\\u5E73\\u65B9\\u7EC4\\u6210\\u7684\\u65B0\\u6570\\u7EC4\\uFF0C\\u8981\\u6C42\\u4E5F\\u6309\\u975E\\u9012\\u51CF\\u987A\\u5E8F\\u6392\\u5E8F\\u3002\"), mdx(\"p\", null, \"\\u793A\\u4F8B 1\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"\\u8F93\\u5165\\uFF1A[-4,-1,0,3,10]\\n\\u8F93\\u51FA\\uFF1A[0,1,9,16,100]\\n\")), mdx(\"p\", null, \"\\u793A\\u4F8B 2\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"\\u8F93\\u5165\\uFF1A[-7,-3,2,3,11]\\n\\u8F93\\u51FA\\uFF1A[4,9,9,49,121]\\n\")), mdx(\"p\", null, \"\\u63D0\\u793A\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"1 <= A.length <= 10000\\n-10000 <= A[i] <= 10000\\nA\\xA0\\u5DF2\\u6309\\u975E\\u9012\\u51CF\\u987A\\u5E8F\\u6392\\u5E8F\\u3002\\n\")), mdx(\"h3\", null, \"\\u601D\\u8DEF\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6700\\u7B80\\u5355\\u7684\\u601D\\u8DEF\\u662F\\u5E73\\u65B9\\u540E\\u6392\\u5E8F\\uFF0C\\u6216\\u8005\\u53D6\\u6B63\\u4E4B\\u540E\\u6392\\u5E8F\\u7136\\u540E\\u5E73\\u65B9\\uFF0C\\u4F46\\u662F\\u5F88\\u660E\\u663E\\u7684\\u4E5F\\u5C31\\u4E0D\\u662F\\u9898\\u76EE\\u60F3\\u8981\\u5B9E\\u73B0\\u7684\\u7B97\\u6CD5\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u9898\\u76EE\\u672C\\u8EAB\\u7684\\u7279\\u70B9\\u662F\\u539F\\u6570\\u7EC4\\u5DF2\\u7ECF\\u6392\\u5217\\u4E86\\uFF0C\\u9700\\u8981\\u5E73\\u65B9\\u4E4B\\u540E\\u518D\\u6392\\uFF0C\\u5E73\\u65B9\\u540E\\u7684\\u5E8F\\u5217\\u80AF\\u5B9A\\u662F\\u4E24\\u8FB9\\u5927\\u4E2D\\u95F4\\u5C0F\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6240\\u4EE5\\u4E00\\u4E2A\\u6BD4\\u8F83\\u597D\\u7684\\u601D\\u8DEF\\u662F\\u4E24\\u8FB9\\u6BD4\\u5927\\u5C0F\\uFF0C\\u5411\\u4E2D\\u95F4\\u9760\\u62E2\\u7684\\u8FC7\\u7A0B\\u4E2D\\u6392\\u5E8F\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8FD9\\u4E5F\\u662F\\u7B97\\u6CD5\\u4E2D\\u6BD4\\u8F83\\u5E38\\u89C1\\u7684\\u53CC\\u6307\\u9488\\u65B9\\u6CD5\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6B65\\u9AA4\\u662F\\u4E24\\u5934\\u6307\\u9488\\uFF0C\\u7136\\u540E\\u6307\\u9488\\u6570\\u503C\\u6BD4\\u5927\\u5C0F\\uFF0C\\u8F83\\u5927\\u7684\\u786E\\u5B9A\\uFF0C\\u8F83\\u5C0F\\u503C\\u7684\\u6307\\u9488\\u7684\\u4E0E\\u4E0B\\u4E00\\u4E2A\\u6307\\u9488\\u6BD4\\u503C\\u7684\\u5927\\u5C0F\\uFF0C\\u4EE5\\u6B64\\u9012\\u5F52\\uFF1B\")), mdx(\"h3\", null, \"\\u4EE3\\u7801\"), mdx(LeetCodePlayground, {\n    codeStr: codeStr_977,\n    inputs: [[-4, -1, 0, 3, 10], [-2], [-4, -3, -3, -2, 0], [-7, -3, 2, 3, 11]],\n    inputStrs: ['[-4,-1,0,3,10]', '[-2]', '[-4,-3,-3,-2,0]', '[-7,-3,2,3,11]'],\n    times: 10000,\n    output: result => \"[\".concat(result.map(num => num).join(','), \"]\"),\n    mdxType: \"LeetCodePlayground\"\n  }), mdx(\"h3\", null, \"2.2 \\u300A905. \\u6309\\u5947\\u5076\\u6392\\u5E8F\\u6570\\u7EC4\\u300B\"), mdx(\"p\", null, \"[\\u7B80\\u5355\\u96BE\\u5EA6 67.8%]\", \" 2019-10-28 19:32:30\"), mdx(\"p\", null, \"\\u7ED9\\u5B9A\\u4E00\\u4E2A\\u975E\\u8D1F\\u6574\\u6570\\u6570\\u7EC4 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"A\"), \"\\uFF0C\\u8FD4\\u56DE\\u4E00\\u4E2A\\u6570\\u7EC4\\uFF0C\\u5728\\u8BE5\\u6570\\u7EC4\\u4E2D\\uFF0C\\xA0\", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"A\"), \" \\u7684\\u6240\\u6709\\u5076\\u6570\\u5143\\u7D20\\u4E4B\\u540E\\u8DDF\\u7740\\u6240\\u6709\\u5947\\u6570\\u5143\\u7D20\\u3002\"), mdx(\"p\", null, \"\\u4F60\\u53EF\\u4EE5\\u8FD4\\u56DE\\u6EE1\\u8DB3\\u6B64\\u6761\\u4EF6\\u7684\\u4EFB\\u4F55\\u6570\\u7EC4\\u4F5C\\u4E3A\\u7B54\\u6848\\u3002\"), mdx(\"p\", null, \"\\u793A\\u4F8B\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"\\u8F93\\u5165\\uFF1A[3,1,2,4]\\n\\u8F93\\u51FA\\uFF1A[2,4,3,1]\\n\\u8F93\\u51FA [4,2,3,1]\\uFF0C[2,4,1,3] \\u548C [4,2,1,3] \\u4E5F\\u4F1A\\u88AB\\u63A5\\u53D7\\u3002\\n\")), mdx(\"p\", null, \"\\u63D0\\u793A\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"1 <= A.length <= 5000\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"0 <= A[i] <= 5000\"))), mdx(\"h3\", null, \"\\u601D\\u8DEF\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5206\\u79BB\\u6570\\u636E\\uFF0C\\u4E0D\\u8981\\u6C42\\u6392\\u5E8F\\uFF0C\\u5C06\\u6570\\u5B57\\u653E\\u5230\\u4E24\\u7AEF\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5F88\\u5BB9\\u6613\\u60F3\\u5230\\u7528\\u9996\\u5C3E\\u6307\\u9488\\uFF0C\\u5224\\u65AD\\u5947\\u5076\\u7136\\u540E\\u79FB\\u52A8\\u6307\\u9488\\u7684\\u503C\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u7B97\\u6CD5\\u786E\\u5B9E\\u662F\\u6709\\u65B9\\u6CD5\\u7684\\uFF0C\\u5982\\u679C\\u4E0D\\u4E86\\u89E3\\u53CC\\u6307\\u9488\\u7684\\u65B9\\u6CD5\\uFF0C\\u53EF\\u80FD\\u4F1A\\u82B1\\u70B9\\u65F6\\u95F4\\uFF1B\")), mdx(\"h3\", null, \"\\u4EE3\\u7801\"), mdx(LeetCodePlayground, {\n    codeStr: codeStr_905,\n    inputs: [[3, 1, 2, 4], [1, 2], [4]],\n    inputStrs: ['[3,1,2,4]', '[1,2]', '[4]'],\n    times: 10000,\n    output: result => \"[\".concat(result.map(num => num).join(','), \"]\"),\n    mdxType: \"LeetCodePlayground\"\n  }), mdx(\"h3\", null, \"2.3 \\u300A832. \\u7FFB\\u8F6C\\u56FE\\u50CF\\u300B\\u4E5F\\u7B97\\u662F\"), mdx(\"p\", null, \"[\\u7B80\\u5355\\u96BE\\u5EA6 73.0%]\", \" 2019-10-23 17:55:51\"), mdx(\"p\", null, \"\\u7ED9\\u5B9A\\u4E00\\u4E2A\\u4E8C\\u8FDB\\u5236\\u77E9\\u9635\\xA0A\\uFF0C\\u6211\\u4EEC\\u60F3\\u5148\\u6C34\\u5E73\\u7FFB\\u8F6C\\u56FE\\u50CF\\uFF0C\\u7136\\u540E\\u53CD\\u8F6C\\u56FE\\u50CF\\u5E76\\u8FD4\\u56DE\\u7ED3\\u679C\\u3002\"), mdx(\"p\", null, \"\\u6C34\\u5E73\\u7FFB\\u8F6C\\u56FE\\u7247\\u5C31\\u662F\\u5C06\\u56FE\\u7247\\u7684\\u6BCF\\u4E00\\u884C\\u90FD\\u8FDB\\u884C\\u7FFB\\u8F6C\\uFF0C\\u5373\\u9006\\u5E8F\\u3002\\u4F8B\\u5982\\uFF0C\\u6C34\\u5E73\\u7FFB\\u8F6C\\xA0\", \"[1, 1, 0]\", \"\\xA0\\u7684\\u7ED3\\u679C\\u662F\\xA0\", \"[0, 1, 1]\", \"\\u3002\"), mdx(\"p\", null, \"\\u53CD\\u8F6C\\u56FE\\u7247\\u7684\\u610F\\u601D\\u662F\\u56FE\\u7247\\u4E2D\\u7684\\xA00\\xA0\\u5168\\u90E8\\u88AB\\xA01\\xA0\\u66FF\\u6362\\uFF0C\\xA01\\xA0\\u5168\\u90E8\\u88AB\\xA00\\xA0\\u66FF\\u6362\\u3002\\u4F8B\\u5982\\uFF0C\\u53CD\\u8F6C\\xA0\", \"[0, 1, 1]\", \"\\xA0\\u7684\\u7ED3\\u679C\\u662F\\xA0\", \"[1, 0, 0]\", \"\\u3002\"), mdx(\"p\", null, \"\\u793A\\u4F8B 1:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"\\u8F93\\u5165: [[1,1,0],[1,0,1],[0,0,0]]\\n\\u8F93\\u51FA: [[1,0,0],[0,1,0],[1,1,1]]\\n\\u89E3\\u91CA: \\u9996\\u5148\\u7FFB\\u8F6C\\u6BCF\\u4E00\\u884C: [[0,1,1],[1,0,1],[0,0,0]]\\uFF1B\\n    \\u7136\\u540E\\u53CD\\u8F6C\\u56FE\\u7247: [[1,0,0],[0,1,0],[1,1,1]]\\n\")), mdx(\"p\", null, \"\\u793A\\u4F8B 2:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"\\u8F93\\u5165: [[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]\\n\\u8F93\\u51FA: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]\\n\\u89E3\\u91CA: \\u9996\\u5148\\u7FFB\\u8F6C\\u6BCF\\u4E00\\u884C: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]]\\uFF1B\\n    \\u7136\\u540E\\u53CD\\u8F6C\\u56FE\\u7247: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]\\n\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u8BF4\\u660E:\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"1 <= A.length = A[0].length <= 20\\n0 <= A[i][j]\\xA0<=\\xA01\\n\")), mdx(\"h3\", null, \"\\u601D\\u8DEF\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u9898\\u76EE\\u5F88\\u7B80\\u5355\\uFF0C\\u4E3B\\u8981\\u770B\\u6548\\u7387\\u4E86\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6570\\u7EC4\\u9006\\u5E8F\\u7684\\u65B9\\u6CD5\\u4E0D\\u4F7F\\u7528\\u81EA\\u5E26\\u7684\\u6570\\u7EC4\\u65B9\\u6CD5\\uFF0C\\u76F4\\u63A5\\u5FAA\\u73AF\\u5C31\\u53EF\\u4EE5\\uFF0C\\u4E0D\\u8FC7\\u53EF\\u4EE5\\u5728\\u539F\\u6570\\u7EC4\\u4E0A\\u8D4B\\u503C\\u8282\\u7701\\u7A7A\\u95F4\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"1/0 \\u4E92\\u6362\\uFF0C\\u6BD4\\u8F83\\u5BB9\\u6613\\u60F3\\u5230\\u7528 1 \\u51CF\\u6765\\u5B9E\\u73B0\\uFF0C\\u8FD8\\u6709\\u4E00\\u4E2A\\u5F02\\u6216\\u8FD0\\u7B97 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"1 ^ 1 = 0; 1 ^ 0 = 1;\"), \"\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4E00\\u884C\\u4E2D\\u534A\\u884C\\u5FAA\\u73AF\\u5373\\u53EF\\u7FFB\\u8F6C\\u4E00\\u884C\\uFF0C\\u7FFB\\u8F6C\\u7684\\u65F6\\u5019\\u540C\\u65F6\\u53CD\\u8F6C\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u7FFB\\u8F6C\\u7684\\u65F6\\u5019\\uFF0C\\u5982\\u679C\\u524D\\u540E\\u5BF9\\u5E94\\u7684\\u4E24\\u4E2A\\u6570\\u5B57\\u4E0D\\u540C\\uFF0C\\u6B63\\u597D\\u662F\\u53CD\\u8F6C\\u7684\\u60C5\\u51B5\\uFF0C\\u4E0D\\u7528\\u8D4B\\u503C\\uFF1B\\u6570\\u5B57\\u76F8\\u540C\\uFF0C\\u540C\\u65F6\\u53CD\\u8F6C\\u5373\\u53EF\\uFF1B\")), mdx(\"h3\", null, \"\\u4EE3\\u7801\"), mdx(LeetCodePlayground, {\n    codeStr: codeStr_832,\n    inputs: [[[1, 1, 0], [1, 0, 1], [0, 0, 0]], [[1, 1, 0, 0], [1, 0, 0, 1], [0, 1, 1, 1], [1, 0, 1, 0]]],\n    inputStrs: ['[[1,1,0],[1,0,1],[0,0,0]]', '[[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]'],\n    times: 10000,\n    output: result => \"[\".concat(result.map(row => row.map(num => num).join(',')).join('],['), \"]\"),\n    mdxType: \"LeetCodePlayground\"\n  }));\n}\n;\nMDXContent.isMDXComponent = true;"}}}}